Програма шифрування
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
const size_t small_buff = 20;
const size_t big_buff = 1024000;
char binarn(char a, int n, int m);
void main() {
clrscr();
char text[small_buff];
char btext[big_buff];
FILE *infile = fopen( "f:\\cc.txt", "rb" );
FILE *outfile = fopen( "f:\\result1.txt", "wb" );
size_t read_len = 0;
size_t file_len = 0;
while( read_len = fread(text, 1, small_buff, infile ) )
{
memcpy( btext + file_len, text, read_len );
file_len += read_len;
}
int q,f,p,k,i,e,chuslo;q=5;p=13;
chuslo=q*p;
char slovo,slovo1,z;
f=chuslo-p-q+1;
printf(”vvedit proste chuslo e v mezax= “);
printf(“%d\n”,f);
printf("e=");
scanf(“%d”,&e);
for(i=0;i<=e;i++)
{ if (1==e*i%f)
{k=i;break;} else k=0; }
for(i=0,j=0;i<=file_len-2;i=i=3,j=j=4){
Z1=bigtext[i];
Z2= bigtext[i+1];
Z3= bigtext[i+2];
slovo=perevorot(Z1);
text=zad(slovo,6,text);
bigtextt[j]=text;
text=0;
text=zad(slovo,2,text);
slovo=perevorot(Z11);
text=zad(slovo,4,text);
bigtextt[j+1]=text;
text=0;
text=zad(slovo,4,text);
slovo=perevorot(Z111);
text=zad(slovo,2,text);
bigtextt[j+2]=text;
text=0;
text=zad(slovo,6,text);
bigtextt[j+3]=text;
}
for(int j1=0;j1<file_len-2;j1=j1+2)
{
for(int j=1;j>=0;j--)
{for (int i=0;i<13;i++)
{
z=(z<<1) | btext[j+j1] & 1;
btext[j+j1]= (btext[j+j1]>>1);
}
}char slovo=0;
int perevorot(int z)
{int slovo;
for (int i=0;i<8;i++)
{
slovo=(slovo<<1) | z & 1;
z= (z>>1);
}
return slovo;}
int zad(int slovo,int n,int z1)
{int zz=0;
for (int i=0;i<n;i++)
{
z1=(z1<<1) | slovo & 1;
slovo = (slovo >>1);
}
zz=z1;
return zz;}
slovo=binarn(slovo,e,chuslo);
for (int i=0;i<13*2;i++)
{
z=(z<<1) | slovo& 1;
slovo= (slovo>>1);
}
for( j=1;j>=0;j--)
{ for (i=0;i<13;i++)
{
btext[j+j1]=(btext[j+j1]<<1) | z & 1;
z= (z>>1) ;
}
}
}
fwrite( btext, 1, file_len, outfile );
fclose( infile );
fclose( outfile ); getch(); }
char binarn(char a, int n, int m) {
if (n == 1)
return a % m;
char z;
z = binarn(a, n / 2, m);
z = (z * z) % m;
if (n % 2 == 1) z = (z * a) % m;
return z;
}
текст повідомлення: 25 11 5
крипто текст: 25 46 5
Програма шифрування
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
const size_t small_buff = 20;
const size_t big_buff = 102400;
void main() {
clrscr();
char text[small_buff];
char bigtext[big_buff];
FILE *infile = fopen( "f:\\cc.txt", "r" ); /*відкриваєм файл*/
size_t read_len = 0;
size_t file_len = 0;
while( read_len = fread(text, 1, small_buff, infile ) ) /*знаходимо довжину файлу*/
{
memcpy( bigtext + file_len, text, read_len );
file_len += read_len;
}
for(i=0,j=0;i<=file_len-2;i=i=3,j=j=4){
Z1=bigtext[i];
Z2= bigtext[i+1];
Z3= bigtext[i+2];
slovo=perevorot(Z1);
text=zad(slovo,6,text);
bigtextt[j]=text;
text=0;
text=zad(slovo,2,text);
slovo=perevorot(Z11);
text=zad(slovo,4,text);
bigtextt[j+1]=text;
text=0;
text=zad(slovo,4,text);
slovo=perevorot(Z111);
text=zad(slovo,2,text);
bigtextt[j+2]=text;
text=0;
text=zad(slovo,6,text);
bigtextt[j+3]=text;
}
int j,a3,a1,a2,i;
int klych1[]={1,1,1,0,0,1,0,0};
int klych2[]={0,1,1,0,0,1,1, 0};
int klych3[]={1,1,0,1,0,0,0,0};
int zsyv1[]={0,1,1,0,0,0,0,0};
int zsyv2[]={0,1,1,0,0,0,0,0};
int zsyv3[]={0,1,1,1,0,0,0,0};
int kk,b1,b2,b3,k[13]; char zyb1; kk=pow(2,13);
for(i=0;i<13;i++)
{k[i]=0;}
for(i=0;i<13;i++)
{{ if (1==klych1[i])
k[i]=pow(2,i);
else k[i]=0;}
a1=a1+k[i];}
for(i=...